A programmable logic device is a semiconductor integrated circuit in which rewriting of the circuit after production of a chip is possible. The programmable logic device includes a plurality of wirings and makes two wirings selected from these wirings into an electrically connected state or non-connected state. A switching circuit is used to perform control in such a manner that the two selected wirings become the connected state or the non-connected state. In the switching circuit, a transistor and a memory are used. This memory can be electrically programmed and on/off of the transistor is switched based on programmed information.
A cross-point resistive change element array is known, which uses a two-terminal resistive change element as a memory device with which the above-described switching circuit is realized. The resistive change element has two electrodes and a resistive change layer provided between the two electrodes. It is achieved to change a resistive state of the resistive change layer by applying a predetermined voltage between the two electrodes to switch electrical resistance between the two electrodes into a low resistive state or a high resistive state.
When programming the resistive change element, it is required to appropriately control the magnitude and application time of a program voltage to be applied to the electrodes. In addition, it is also important to control the magnitude of a current that flows through the resistive change element while applying the program voltage. As described, a semiconductor integrated circuit is known, which has a circuit for controlling a current flowing through the resistive change element while being programmed.
In the semiconductor integrated circuit, however, writing is performed, one by one, to the memory devices of a resistive change element array. For this reason, it is a problem for a semiconductor integrated circuit having large-scale resistive change element arrays to take time for writing.